package com.ruoyi.common.core.domain.DTO;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

@Data
public class InsertUserBankAccountBO {
    /**
     * 关联用户ID（系统用户ID或支付宝用户ID）
     */
    @NotNull(message = "用户ID不能为空")
    private Long userId;

    /**
     * 银行编码（如ICBC、CMB，参考支付宝银行编码标准）
     */
    private String bankCode;

    /**
     * 银行名称（如"中国工商银行"）
     */
    @NotBlank(message = "银行名称不能为空")
    private String bankName;

    /**
     * 账户类型：1-储蓄卡，2-信用卡
     */
    @NotNull(message = "账户类型不能为空")
    private Integer accountType;

    /**
     * 加密后的银行卡号（AES加密）
     */
    @NotBlank(message = "银行卡号不能为空")
    private String cardNoEncrypted;

    /**
     * 持卡人姓名（加密存储）
     */
    @NotBlank(message = "持卡人姓名不能为空")
    private String holderName;

    /**
     * 加密后的身份证号（实名认证用，可选）
     */
    @NotBlank(message = "身份证号不能为空")
    private String idCardEncrypted;

    /**
     * 加密后的银行预留手机号（可选）
     */
    @NotBlank(message = "银行预留手机号不能为空")
    private String phoneEncrypted;

    /**
     * 开户行名称（如"北京分行朝阳支行"）
     */
    @NotBlank(message = "开户行名称不能为空")
    private String branchName;

    /**
     * 开户省
     */
    @NotBlank(message = "开户省不能为空")
    private String province;

    /**
     * 开户市
     */
    @NotBlank(message = "开户市不能为空")
    private String city;

    /**
     * 是否默认账户：0-否，1-是
     */
    private Integer isDefault;
}
